info <- read.csv("../data/train_set/label.csv")
load("../output/fiducial_pt_list.Rdata")
library(readxl)
# A function to plot histogram of distribution of pairwise distance for each emotion
# input: emotion index, first point, second point, vertical or horizontal distance
# output: histogram of distance distribution
dist_histogram_by_emotion <- function(emotion_idx, pt1, pt2, vertical = T){
indices <- info[info$emotion_idx == emotion_idx, 'Index']
emotion <- as.character(info[info$emotion_idx == emotion_idx, 'emotion_cat'])[1]
ver.dist <- function(idx){
if(vertical){
ver.loc <- fiducial_pt_list[[idx]][,2]
}
else{
ver.loc <- fiducial_pt_list[[idx]][,1]
}
pairwise_dist <- as.matrix(dist(ver.loc))
ver.dist <- pairwise_dist[pt1,pt2]
return(ver.dist)
}
dist_distribution <- sapply(indices, ver.dist)
#jpeg(paste(c('../output/hist', emotion_idx,"_", pt1, "_", pt2, '.jpg'), collapse = ''),
#width = 500, height = 375)
hist(dist_distribution, xlab = "distance",
main = paste(c(emotion, "distance between", pt1, "and", pt2),collapse = " "))
abline(v = mean(dist_distribution))
#dev.off()
}
# A function to generalize "dist_histogram_by_emotion" to all emotions
dist_histogram <- function(pt1, pt2, vertical = T){
lapply(1:22, dist_histogram_by_emotion, pt1, pt2, vertical)
}
#examples
dist_histogram(50,52)





















[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
[[4]]
NULL
[[5]]
NULL
[[6]]
NULL
[[7]]
NULL
[[8]]
NULL
[[9]]
NULL
[[10]]
NULL
[[11]]
NULL
[[12]]
NULL
[[13]]
NULL
[[14]]
NULL
[[15]]
NULL
[[16]]
NULL
[[17]]
NULL
[[18]]
NULL
[[19]]
NULL
[[20]]
NULL
[[21]]
NULL
[[22]]
NULL

dist_histogram(1,21)





















[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
[[4]]
NULL
[[5]]
NULL
[[6]]
NULL
[[7]]
NULL
[[8]]
NULL
[[9]]
NULL
[[10]]
NULL
[[11]]
NULL
[[12]]
NULL
[[13]]
NULL
[[14]]
NULL
[[15]]
NULL
[[16]]
NULL
[[17]]
NULL
[[18]]
NULL
[[19]]
NULL
[[20]]
NULL
[[21]]
NULL
[[22]]
NULL

library(EBImage)
# a function display fiducial points on images
# input: identity index
# output: all images associated with the identity with fiducial points marked
display_fid_pt <- function(identity){
indices <- info[info$identity == identity, 'Index']
emotions <- as.character(info[info$identity == identity, 'emotion_cat'])
image.path_sub <- paste0(train_image_dir, sprintf("%04d", indices), ".jpg")
Image_list_sub <- lapply(image.path_sub, EBImage::readImage)
fiducial_pt_list_sub <- fiducial_pt_list[indices]
display_single <- function(j){
#jpeg(paste(c('../output/', identity,'_', j, '.jpg'), collapse = ''), width = 500, height = 375)
display(Image(Image_list_sub[[j]], colormode = 'Color'), method="raster")
text(x = 170, y = 50, label = emotions[j], cex = 1.5)
add_point <- function(n){text(x = fiducial_pt_list_sub[[j]][n,1],
y = fiducial_pt_list_sub[[j]][n,2],
label = as.character(n), col = "white", cex = 0.8)}
lapply(1:78,add_point)
#dev.off()
}
lapply(1:length(indices), display_single)
}
display_fid_pt(110)











[[1]]
[[1]][[1]]
NULL
[[1]][[2]]
NULL
[[1]][[3]]
NULL
[[1]][[4]]
NULL
[[1]][[5]]
NULL
[[1]][[6]]
NULL
[[1]][[7]]
NULL
[[1]][[8]]
NULL
[[1]][[9]]
NULL
[[1]][[10]]
NULL
[[1]][[11]]
NULL
[[1]][[12]]
NULL
[[1]][[13]]
NULL
[[1]][[14]]
NULL
[[1]][[15]]
NULL
[[1]][[16]]
NULL
[[1]][[17]]
NULL
[[1]][[18]]
NULL
[[1]][[19]]
NULL
[[1]][[20]]
NULL
[[1]][[21]]
NULL
[[1]][[22]]
NULL
[[1]][[23]]
NULL
[[1]][[24]]
NULL
[[1]][[25]]
NULL
[[1]][[26]]
NULL
[[1]][[27]]
NULL
[[1]][[28]]
NULL
[[1]][[29]]
NULL
[[1]][[30]]
NULL
[[1]][[31]]
NULL
[[1]][[32]]
NULL
[[1]][[33]]
NULL
[[1]][[34]]
NULL
[[1]][[35]]
NULL
[[1]][[36]]
NULL
[[1]][[37]]
NULL
[[1]][[38]]
NULL
[[1]][[39]]
NULL
[[1]][[40]]
NULL
[[1]][[41]]
NULL
[[1]][[42]]
NULL
[[1]][[43]]
NULL
[[1]][[44]]
NULL
[[1]][[45]]
NULL
[[1]][[46]]
NULL
[[1]][[47]]
NULL
[[1]][[48]]
NULL
[[1]][[49]]
NULL
[[1]][[50]]
NULL
[[1]][[51]]
NULL
[[1]][[52]]
NULL
[[1]][[53]]
NULL
[[1]][[54]]
NULL
[[1]][[55]]
NULL
[[1]][[56]]
NULL
[[1]][[57]]
NULL
[[1]][[58]]
NULL
[[1]][[59]]
NULL
[[1]][[60]]
NULL
[[1]][[61]]
NULL
[[1]][[62]]
NULL
[[1]][[63]]
NULL
[[1]][[64]]
NULL
[[1]][[65]]
NULL
[[1]][[66]]
NULL
[[1]][[67]]
NULL
[[1]][[68]]
NULL
[[1]][[69]]
NULL
[[1]][[70]]
NULL
[[1]][[71]]
NULL
[[1]][[72]]
NULL
[[1]][[73]]
NULL
[[1]][[74]]
NULL
[[1]][[75]]
NULL
[[1]][[76]]
NULL
[[1]][[77]]
NULL
[[1]][[78]]
NULL
[[2]]
[[2]][[1]]
NULL
[[2]][[2]]
NULL
[[2]][[3]]
NULL
[[2]][[4]]
NULL
[[2]][[5]]
NULL
[[2]][[6]]
NULL
[[2]][[7]]
NULL
[[2]][[8]]
NULL
[[2]][[9]]
NULL
[[2]][[10]]
NULL
[[2]][[11]]
NULL
[[2]][[12]]
NULL
[[2]][[13]]
NULL
[[2]][[14]]
NULL
[[2]][[15]]
NULL
[[2]][[16]]
NULL
[[2]][[17]]
NULL
[[2]][[18]]
NULL
[[2]][[19]]
NULL
[[2]][[20]]
NULL
[[2]][[21]]
NULL
[[2]][[22]]
NULL
[[2]][[23]]
NULL
[[2]][[24]]
NULL
[[2]][[25]]
NULL
[[2]][[26]]
NULL
[[2]][[27]]
NULL
[[2]][[28]]
NULL
[[2]][[29]]
NULL
[[2]][[30]]
NULL
[[2]][[31]]
NULL
[[2]][[32]]
NULL
[[2]][[33]]
NULL
[[2]][[34]]
NULL
[[2]][[35]]
NULL
[[2]][[36]]
NULL
[[2]][[37]]
NULL
[[2]][[38]]
NULL
[[2]][[39]]
NULL
[[2]][[40]]
NULL
[[2]][[41]]
NULL
[[2]][[42]]
NULL
[[2]][[43]]
NULL
[[2]][[44]]
NULL
[[2]][[45]]
NULL
[[2]][[46]]
NULL
[[2]][[47]]
NULL
[[2]][[48]]
NULL
[[2]][[49]]
NULL
[[2]][[50]]
NULL
[[2]][[51]]
NULL
[[2]][[52]]
NULL
[[2]][[53]]
NULL
[[2]][[54]]
NULL
[[2]][[55]]
NULL
[[2]][[56]]
NULL
[[2]][[57]]
NULL
[[2]][[58]]
NULL
[[2]][[59]]
NULL
[[2]][[60]]
NULL
[[2]][[61]]
NULL
[[2]][[62]]
NULL
[[2]][[63]]
NULL
[[2]][[64]]
NULL
[[2]][[65]]
NULL
[[2]][[66]]
NULL
[[2]][[67]]
NULL
[[2]][[68]]
NULL
[[2]][[69]]
NULL
[[2]][[70]]
NULL
[[2]][[71]]
NULL
[[2]][[72]]
NULL
[[2]][[73]]
NULL
[[2]][[74]]
NULL
[[2]][[75]]
NULL
[[2]][[76]]
NULL
[[2]][[77]]
NULL
[[2]][[78]]
NULL
[[3]]
[[3]][[1]]
NULL
[[3]][[2]]
NULL
[[3]][[3]]
NULL
[[3]][[4]]
NULL
[[3]][[5]]
NULL
[[3]][[6]]
NULL
[[3]][[7]]
NULL
[[3]][[8]]
NULL
[[3]][[9]]
NULL
[[3]][[10]]
NULL
[[3]][[11]]
NULL
[[3]][[12]]
NULL
[[3]][[13]]
NULL
[[3]][[14]]
NULL
[[3]][[15]]
NULL
[[3]][[16]]
NULL
[[3]][[17]]
NULL
[[3]][[18]]
NULL
[[3]][[19]]
NULL
[[3]][[20]]
NULL
[[3]][[21]]
NULL
[[3]][[22]]
NULL
[[3]][[23]]
NULL
[[3]][[24]]
NULL
[[3]][[25]]
NULL
[[3]][[26]]
NULL
[[3]][[27]]
NULL
[[3]][[28]]
NULL
[[3]][[29]]
NULL
[[3]][[30]]
NULL
[[3]][[31]]
NULL
[[3]][[32]]
NULL
[[3]][[33]]
NULL
[[3]][[34]]
NULL
[[3]][[35]]
NULL
[[3]][[36]]
NULL
[[3]][[37]]
NULL
[[3]][[38]]
NULL
[[3]][[39]]
NULL
[[3]][[40]]
NULL
[[3]][[41]]
NULL
[[3]][[42]]
NULL
[[3]][[43]]
NULL
[[3]][[44]]
NULL
[[3]][[45]]
NULL
[[3]][[46]]
NULL
[[3]][[47]]
NULL
[[3]][[48]]
NULL
[[3]][[49]]
NULL
[[3]][[50]]
NULL
[[3]][[51]]
NULL
[[3]][[52]]
NULL
[[3]][[53]]
NULL
[[3]][[54]]
NULL
[[3]][[55]]
NULL
[[3]][[56]]
NULL
[[3]][[57]]
NULL
[[3]][[58]]
NULL
[[3]][[59]]
NULL
[[3]][[60]]
NULL
[[3]][[61]]
NULL
[[3]][[62]]
NULL
[[3]][[63]]
NULL
[[3]][[64]]
NULL
[[3]][[65]]
NULL
[[3]][[66]]
NULL
[[3]][[67]]
NULL
[[3]][[68]]
NULL
[[3]][[69]]
NULL
[[3]][[70]]
NULL
[[3]][[71]]
NULL
[[3]][[72]]
NULL
[[3]][[73]]
NULL
[[3]][[74]]
NULL
[[3]][[75]]
NULL
[[3]][[76]]
NULL
[[3]][[77]]
NULL
[[3]][[78]]
NULL
[[4]]
[[4]][[1]]
NULL
[[4]][[2]]
NULL
[[4]][[3]]
NULL
[[4]][[4]]
NULL
[[4]][[5]]
NULL
[[4]][[6]]
NULL
[[4]][[7]]
NULL
[[4]][[8]]
NULL
[[4]][[9]]
NULL
[[4]][[10]]
NULL
[[4]][[11]]
NULL
[[4]][[12]]
NULL
[[4]][[13]]
NULL
[[4]][[14]]
NULL
[[4]][[15]]
NULL
[[4]][[16]]
NULL
[[4]][[17]]
NULL
[[4]][[18]]
NULL
[[4]][[19]]
NULL
[[4]][[20]]
NULL
[[4]][[21]]
NULL
[[4]][[22]]
NULL
[[4]][[23]]
NULL
[[4]][[24]]
NULL
[[4]][[25]]
NULL
[[4]][[26]]
NULL
[[4]][[27]]
NULL
[[4]][[28]]
NULL
[[4]][[29]]
NULL
[[4]][[30]]
NULL
[[4]][[31]]
NULL
[[4]][[32]]
NULL
[[4]][[33]]
NULL
[[4]][[34]]
NULL
[[4]][[35]]
NULL
[[4]][[36]]
NULL
[[4]][[37]]
NULL
[[4]][[38]]
NULL
[[4]][[39]]
NULL
[[4]][[40]]
NULL
[[4]][[41]]
NULL
[[4]][[42]]
NULL
[[4]][[43]]
NULL
[[4]][[44]]
NULL
[[4]][[45]]
NULL
[[4]][[46]]
NULL
[[4]][[47]]
NULL
[[4]][[48]]
NULL
[[4]][[49]]
NULL
[[4]][[50]]
NULL
[[4]][[51]]
NULL
[[4]][[52]]
NULL
[[4]][[53]]
NULL
[[4]][[54]]
NULL
[[4]][[55]]
NULL
[[4]][[56]]
NULL
[[4]][[57]]
NULL
[[4]][[58]]
NULL
[[4]][[59]]
NULL
[[4]][[60]]
NULL
[[4]][[61]]
NULL
[[4]][[62]]
NULL
[[4]][[63]]
NULL
[[4]][[64]]
NULL
[[4]][[65]]
NULL
[[4]][[66]]
NULL
[[4]][[67]]
NULL
[[4]][[68]]
NULL
[[4]][[69]]
NULL
[[4]][[70]]
NULL
[[4]][[71]]
NULL
[[4]][[72]]
NULL
[[4]][[73]]
NULL
[[4]][[74]]
NULL
[[4]][[75]]
NULL
[[4]][[76]]
NULL
[[4]][[77]]
NULL
[[4]][[78]]
NULL
[[5]]
[[5]][[1]]
NULL
[[5]][[2]]
NULL
[[5]][[3]]
NULL
[[5]][[4]]
NULL
[[5]][[5]]
NULL
[[5]][[6]]
NULL
[[5]][[7]]
NULL
[[5]][[8]]
NULL
[[5]][[9]]
NULL
[[5]][[10]]
NULL
[[5]][[11]]
NULL
[[5]][[12]]
NULL
[[5]][[13]]
NULL
[[5]][[14]]
NULL
[[5]][[15]]
NULL
[[5]][[16]]
NULL
[[5]][[17]]
NULL
[[5]][[18]]
NULL
[[5]][[19]]
NULL
[[5]][[20]]
NULL
[[5]][[21]]
NULL
[[5]][[22]]
NULL
[[5]][[23]]
NULL
[[5]][[24]]
NULL
[[5]][[25]]
NULL
[[5]][[26]]
NULL
[[5]][[27]]
NULL
[[5]][[28]]
NULL
[[5]][[29]]
NULL
[[5]][[30]]
NULL
[[5]][[31]]
NULL
[[5]][[32]]
NULL
[[5]][[33]]
NULL
[[5]][[34]]
NULL
[[5]][[35]]
NULL
[[5]][[36]]
NULL
[[5]][[37]]
NULL
[[5]][[38]]
NULL
[[5]][[39]]
NULL
[[5]][[40]]
NULL
[[5]][[41]]
NULL
[[5]][[42]]
NULL
[[5]][[43]]
NULL
[[5]][[44]]
NULL
[[5]][[45]]
NULL
[[5]][[46]]
NULL
[[5]][[47]]
NULL
[[5]][[48]]
NULL
[[5]][[49]]
NULL
[[5]][[50]]
NULL
[[5]][[51]]
NULL
[[5]][[52]]
NULL
[[5]][[53]]
NULL
[[5]][[54]]
NULL
[[5]][[55]]
NULL
[[5]][[56]]
NULL
[[5]][[57]]
NULL
[[5]][[58]]
NULL
[[5]][[59]]
NULL
[[5]][[60]]
NULL
[[5]][[61]]
NULL
[[5]][[62]]
NULL
[[5]][[63]]
NULL
[[5]][[64]]
NULL
[[5]][[65]]
NULL
[[5]][[66]]
NULL
[[5]][[67]]
NULL
[[5]][[68]]
NULL
[[5]][[69]]
NULL
[[5]][[70]]
NULL
[[5]][[71]]
NULL
[[5]][[72]]
NULL
[[5]][[73]]
NULL
[[5]][[74]]
NULL
[[5]][[75]]
NULL
[[5]][[76]]
NULL
[[5]][[77]]
NULL
[[5]][[78]]
NULL
[[6]]
[[6]][[1]]
NULL
[[6]][[2]]
NULL
[[6]][[3]]
NULL
[[6]][[4]]
NULL
[[6]][[5]]
NULL
[[6]][[6]]
NULL
[[6]][[7]]
NULL
[[6]][[8]]
NULL
[[6]][[9]]
NULL
[[6]][[10]]
NULL
[[6]][[11]]
NULL
[[6]][[12]]
NULL
[[6]][[13]]
NULL
[[6]][[14]]
NULL
[[6]][[15]]
NULL
[[6]][[16]]
NULL
[[6]][[17]]
NULL
[[6]][[18]]
NULL
[[6]][[19]]
NULL
[[6]][[20]]
NULL
[[6]][[21]]
NULL
[[6]][[22]]
NULL
[[6]][[23]]
NULL
[[6]][[24]]
NULL
[[6]][[25]]
NULL
[[6]][[26]]
NULL
[[6]][[27]]
NULL
[[6]][[28]]
NULL
[[6]][[29]]
NULL
[[6]][[30]]
NULL
[[6]][[31]]
NULL
[[6]][[32]]
NULL
[[6]][[33]]
NULL
[[6]][[34]]
NULL
[[6]][[35]]
NULL
[[6]][[36]]
NULL
[[6]][[37]]
NULL
[[6]][[38]]
NULL
[[6]][[39]]
NULL
[[6]][[40]]
NULL
[[6]][[41]]
NULL
[[6]][[42]]
NULL
[[6]][[43]]
NULL
[[6]][[44]]
NULL
[[6]][[45]]
NULL
[[6]][[46]]
NULL
[[6]][[47]]
NULL
[[6]][[48]]
NULL
[[6]][[49]]
NULL
[[6]][[50]]
NULL
[[6]][[51]]
NULL
[[6]][[52]]
NULL
[[6]][[53]]
NULL
[[6]][[54]]
NULL
[[6]][[55]]
NULL
[[6]][[56]]
NULL
[[6]][[57]]
NULL
[[6]][[58]]
NULL
[[6]][[59]]
NULL
[[6]][[60]]
NULL
[[6]][[61]]
NULL
[[6]][[62]]
NULL
[[6]][[63]]
NULL
[[6]][[64]]
NULL
[[6]][[65]]
NULL
[[6]][[66]]
NULL
[[6]][[67]]
NULL
[[6]][[68]]
NULL
[[6]][[69]]
NULL
[[6]][[70]]
NULL
[[6]][[71]]
NULL
[[6]][[72]]
NULL
[[6]][[73]]
NULL
[[6]][[74]]
NULL
[[6]][[75]]
NULL
[[6]][[76]]
NULL
[[6]][[77]]
NULL
[[6]][[78]]
NULL
[[7]]
[[7]][[1]]
NULL
[[7]][[2]]
NULL
[[7]][[3]]
NULL
[[7]][[4]]
NULL
[[7]][[5]]
NULL
[[7]][[6]]
NULL
[[7]][[7]]
NULL
[[7]][[8]]
NULL
[[7]][[9]]
NULL
[[7]][[10]]
NULL
[[7]][[11]]
NULL
[[7]][[12]]
NULL
[[7]][[13]]
NULL
[[7]][[14]]
NULL
[[7]][[15]]
NULL
[[7]][[16]]
NULL
[[7]][[17]]
NULL
[[7]][[18]]
NULL
[[7]][[19]]
NULL
[[7]][[20]]
NULL
[[7]][[21]]
NULL
[[7]][[22]]
NULL
[[7]][[23]]
NULL
[[7]][[24]]
NULL
[[7]][[25]]
NULL
[[7]][[26]]
NULL
[[7]][[27]]
NULL
[[7]][[28]]
NULL
[[7]][[29]]
NULL
[[7]][[30]]
NULL
[[7]][[31]]
NULL
[[7]][[32]]
NULL
[[7]][[33]]
NULL
[[7]][[34]]
NULL
[[7]][[35]]
NULL
[[7]][[36]]
NULL
[[7]][[37]]
NULL
[[7]][[38]]
NULL
[[7]][[39]]
NULL
[[7]][[40]]
NULL
[[7]][[41]]
NULL
[[7]][[42]]
NULL
[[7]][[43]]
NULL
[[7]][[44]]
NULL
[[7]][[45]]
NULL
[[7]][[46]]
NULL
[[7]][[47]]
NULL
[[7]][[48]]
NULL
[[7]][[49]]
NULL
[[7]][[50]]
NULL
[[7]][[51]]
NULL
[[7]][[52]]
NULL
[[7]][[53]]
NULL
[[7]][[54]]
NULL
[[7]][[55]]
NULL
[[7]][[56]]
NULL
[[7]][[57]]
NULL
[[7]][[58]]
NULL
[[7]][[59]]
NULL
[[7]][[60]]
NULL
[[7]][[61]]
NULL
[[7]][[62]]
NULL
[[7]][[63]]
NULL
[[7]][[64]]
NULL
[[7]][[65]]
NULL
[[7]][[66]]
NULL
[[7]][[67]]
NULL
[[7]][[68]]
NULL
[[7]][[69]]
NULL
[[7]][[70]]
NULL
[[7]][[71]]
NULL
[[7]][[72]]
NULL
[[7]][[73]]
NULL
[[7]][[74]]
NULL
[[7]][[75]]
NULL
[[7]][[76]]
NULL
[[7]][[77]]
NULL
[[7]][[78]]
NULL
[[8]]
[[8]][[1]]
NULL
[[8]][[2]]
NULL
[[8]][[3]]
NULL
[[8]][[4]]
NULL
[[8]][[5]]
NULL
[[8]][[6]]
NULL
[[8]][[7]]
NULL
[[8]][[8]]
NULL
[[8]][[9]]
NULL
[[8]][[10]]
NULL
[[8]][[11]]
NULL
[[8]][[12]]
NULL
[[8]][[13]]
NULL
[[8]][[14]]
NULL
[[8]][[15]]
NULL
[[8]][[16]]
NULL
[[8]][[17]]
NULL
[[8]][[18]]
NULL
[[8]][[19]]
NULL
[[8]][[20]]
NULL
[[8]][[21]]
NULL
[[8]][[22]]
NULL
[[8]][[23]]
NULL
[[8]][[24]]
NULL
[[8]][[25]]
NULL
[[8]][[26]]
NULL
[[8]][[27]]
NULL
[[8]][[28]]
NULL
[[8]][[29]]
NULL
[[8]][[30]]
NULL
[[8]][[31]]
NULL
[[8]][[32]]
NULL
[[8]][[33]]
NULL
[[8]][[34]]
NULL
[[8]][[35]]
NULL
[[8]][[36]]
NULL
[[8]][[37]]
NULL
[[8]][[38]]
NULL
[[8]][[39]]
NULL
[[8]][[40]]
NULL
[[8]][[41]]
NULL
[[8]][[42]]
NULL
[[8]][[43]]
NULL
[[8]][[44]]
NULL
[[8]][[45]]
NULL
[[8]][[46]]
NULL
[[8]][[47]]
NULL
[[8]][[48]]
NULL
[[8]][[49]]
NULL
[[8]][[50]]
NULL
[[8]][[51]]
NULL
[[8]][[52]]
NULL
[[8]][[53]]
NULL
[[8]][[54]]
NULL
[[8]][[55]]
NULL
[[8]][[56]]
NULL
[[8]][[57]]
NULL
[[8]][[58]]
NULL
[[8]][[59]]
NULL
[[8]][[60]]
NULL
[[8]][[61]]
NULL
[[8]][[62]]
NULL
[[8]][[63]]
NULL
[[8]][[64]]
NULL
[[8]][[65]]
NULL
[[8]][[66]]
NULL
[[8]][[67]]
NULL
[[8]][[68]]
NULL
[[8]][[69]]
NULL
[[8]][[70]]
NULL
[[8]][[71]]
NULL
[[8]][[72]]
NULL
[[8]][[73]]
NULL
[[8]][[74]]
NULL
[[8]][[75]]
NULL
[[8]][[76]]
NULL
[[8]][[77]]
NULL
[[8]][[78]]
NULL
[[9]]
[[9]][[1]]
NULL
[[9]][[2]]
NULL
[[9]][[3]]
NULL
[[9]][[4]]
NULL
[[9]][[5]]
NULL
[[9]][[6]]
NULL
[[9]][[7]]
NULL
[[9]][[8]]
NULL
[[9]][[9]]
NULL
[[9]][[10]]
NULL
[[9]][[11]]
NULL
[[9]][[12]]
NULL
[[9]][[13]]
NULL
[[9]][[14]]
NULL
[[9]][[15]]
NULL
[[9]][[16]]
NULL
[[9]][[17]]
NULL
[[9]][[18]]
NULL
[[9]][[19]]
NULL
[[9]][[20]]
NULL
[[9]][[21]]
NULL
[[9]][[22]]
NULL
[[9]][[23]]
NULL
[[9]][[24]]
NULL
[[9]][[25]]
NULL
[[9]][[26]]
NULL
[[9]][[27]]
NULL
[[9]][[28]]
NULL
[[9]][[29]]
NULL
[[9]][[30]]
NULL
[[9]][[31]]
NULL
[[9]][[32]]
NULL
[[9]][[33]]
NULL
[[9]][[34]]
NULL
[[9]][[35]]
NULL
[[9]][[36]]
NULL
[[9]][[37]]
NULL
[[9]][[38]]
NULL
[[9]][[39]]
NULL
[[9]][[40]]
NULL
[[9]][[41]]
NULL
[[9]][[42]]
NULL
[[9]][[43]]
NULL
[[9]][[44]]
NULL
[[9]][[45]]
NULL
[[9]][[46]]
NULL
[[9]][[47]]
NULL
[[9]][[48]]
NULL
[[9]][[49]]
NULL
[[9]][[50]]
NULL
[[9]][[51]]
NULL
[[9]][[52]]
NULL
[[9]][[53]]
NULL
[[9]][[54]]
NULL
[[9]][[55]]
NULL
[[9]][[56]]
NULL
[[9]][[57]]
NULL
[[9]][[58]]
NULL
[[9]][[59]]
NULL
[[9]][[60]]
NULL
[[9]][[61]]
NULL
[[9]][[62]]
NULL
[[9]][[63]]
NULL
[[9]][[64]]
NULL
[[9]][[65]]
NULL
[[9]][[66]]
NULL
[[9]][[67]]
NULL
[[9]][[68]]
NULL
[[9]][[69]]
NULL
[[9]][[70]]
NULL
[[9]][[71]]
NULL
[[9]][[72]]
NULL
[[9]][[73]]
NULL
[[9]][[74]]
NULL
[[9]][[75]]
NULL
[[9]][[76]]
NULL
[[9]][[77]]
NULL
[[9]][[78]]
NULL
[[10]]
[[10]][[1]]
NULL
[[10]][[2]]
NULL
[[10]][[3]]
NULL
[[10]][[4]]
NULL
[[10]][[5]]
NULL
[[10]][[6]]
NULL
[[10]][[7]]
NULL
[[10]][[8]]
NULL
[[10]][[9]]
NULL
[[10]][[10]]
NULL
[[10]][[11]]
NULL
[[10]][[12]]
NULL
[[10]][[13]]
NULL
[[10]][[14]]
NULL
[[10]][[15]]
NULL
[[10]][[16]]
NULL
[[10]][[17]]
NULL
[[10]][[18]]
NULL
[[10]][[19]]
NULL
[[10]][[20]]
NULL
[[10]][[21]]
NULL
[[10]][[22]]
NULL
[[10]][[23]]
NULL
[[10]][[24]]
NULL
[[10]][[25]]
NULL
[[10]][[26]]
NULL
[[10]][[27]]
NULL
[[10]][[28]]
NULL
[[10]][[29]]
NULL
[[10]][[30]]
NULL
[[10]][[31]]
NULL
[[10]][[32]]
NULL
[[10]][[33]]
NULL
[[10]][[34]]
NULL
[[10]][[35]]
NULL
[[10]][[36]]
NULL
[[10]][[37]]
NULL
[[10]][[38]]
NULL
[[10]][[39]]
NULL
[[10]][[40]]
NULL
[[10]][[41]]
NULL
[[10]][[42]]
NULL
[[10]][[43]]
NULL
[[10]][[44]]
NULL
[[10]][[45]]
NULL
[[10]][[46]]
NULL
[[10]][[47]]
NULL
[[10]][[48]]
NULL
[[10]][[49]]
NULL
[[10]][[50]]
NULL
[[10]][[51]]
NULL
[[10]][[52]]
NULL
[[10]][[53]]
NULL
[[10]][[54]]
NULL
[[10]][[55]]
NULL
[[10]][[56]]
NULL
[[10]][[57]]
NULL
[[10]][[58]]
NULL
[[10]][[59]]
NULL
[[10]][[60]]
NULL
[[10]][[61]]
NULL
[[10]][[62]]
NULL
[[10]][[63]]
NULL
[[10]][[64]]
NULL
[[10]][[65]]
NULL
[[10]][[66]]
NULL
[[10]][[67]]
NULL
[[10]][[68]]
NULL
[[10]][[69]]
NULL
[[10]][[70]]
NULL
[[10]][[71]]
NULL
[[10]][[72]]
NULL
[[10]][[73]]
NULL
[[10]][[74]]
NULL
[[10]][[75]]
NULL
[[10]][[76]]
NULL
[[10]][[77]]
NULL
[[10]][[78]]
NULL
[[11]]
[[11]][[1]]
NULL
[[11]][[2]]
NULL
[[11]][[3]]
NULL
[[11]][[4]]
NULL
[[11]][[5]]
NULL
[[11]][[6]]
NULL
[[11]][[7]]
NULL
[[11]][[8]]
NULL
[[11]][[9]]
NULL
[[11]][[10]]
NULL
[[11]][[11]]
NULL
[[11]][[12]]
NULL
[[11]][[13]]
NULL
[[11]][[14]]
NULL
[[11]][[15]]
NULL
[[11]][[16]]
NULL
[[11]][[17]]
NULL
[[11]][[18]]
NULL
[[11]][[19]]
NULL
[[11]][[20]]
NULL
[[11]][[21]]
NULL
[[11]][[22]]
NULL
[[11]][[23]]
NULL
[[11]][[24]]
NULL
[[11]][[25]]
NULL
[[11]][[26]]
NULL
[[11]][[27]]
NULL
[[11]][[28]]
NULL
[[11]][[29]]
NULL
[[11]][[30]]
NULL
[[11]][[31]]
NULL
[[11]][[32]]
NULL
[[11]][[33]]
NULL
[[11]][[34]]
NULL
[[11]][[35]]
NULL
[[11]][[36]]
NULL
[[11]][[37]]
NULL
[[11]][[38]]
NULL
[[11]][[39]]
NULL
[[11]][[40]]
NULL
[[11]][[41]]
NULL
[[11]][[42]]
NULL
[[11]][[43]]
NULL
[[11]][[44]]
NULL
[[11]][[45]]
NULL
[[11]][[46]]
NULL
[[11]][[47]]
NULL
[[11]][[48]]
NULL
[[11]][[49]]
NULL
[[11]][[50]]
NULL
[[11]][[51]]
NULL
[[11]][[52]]
NULL
[[11]][[53]]
NULL
[[11]][[54]]
NULL
[[11]][[55]]
NULL
[[11]][[56]]
NULL
[[11]][[57]]
NULL
[[11]][[58]]
NULL
[[11]][[59]]
NULL
[[11]][[60]]
NULL
[[11]][[61]]
NULL
[[11]][[62]]
NULL
[[11]][[63]]
NULL
[[11]][[64]]
NULL
[[11]][[65]]
NULL
[[11]][[66]]
NULL
[[11]][[67]]
NULL
[[11]][[68]]
NULL
[[11]][[69]]
NULL
[[11]][[70]]
NULL
[[11]][[71]]
NULL
[[11]][[72]]
NULL
[[11]][[73]]
NULL
[[11]][[74]]
NULL
[[11]][[75]]
NULL
[[11]][[76]]
NULL
[[11]][[77]]
NULL
[[11]][[78]]
NULL
[[12]]
[[12]][[1]]
NULL
[[12]][[2]]
NULL
[[12]][[3]]
NULL
[[12]][[4]]
NULL
[[12]][[5]]
NULL
[[12]][[6]]
NULL
[[12]][[7]]
NULL
[[12]][[8]]
NULL
[[12]][[9]]
NULL
[[12]][[10]]
NULL
[[12]][[11]]
NULL
[[12]][[12]]
NULL
[[12]][[13]]
NULL
[[12]][[14]]
NULL
[[12]][[15]]
NULL
[[12]][[16]]
NULL
[[12]][[17]]
NULL
[[12]][[18]]
NULL
[[12]][[19]]
NULL
[[12]][[20]]
NULL
[[12]][[21]]
NULL
[[12]][[22]]
NULL
[[12]][[23]]
NULL
[[12]][[24]]
NULL
[[12]][[25]]
NULL
[[12]][[26]]
NULL
[[12]][[27]]
NULL
[[12]][[28]]
NULL
[[12]][[29]]
NULL
[[12]][[30]]
NULL
[[12]][[31]]
NULL
[[12]][[32]]
NULL
[[12]][[33]]
NULL
[[12]][[34]]
NULL
[[12]][[35]]
NULL
[[12]][[36]]
NULL
[[12]][[37]]
NULL
[[12]][[38]]
NULL
[[12]][[39]]
NULL
[[12]][[40]]
NULL
[[12]][[41]]
NULL
[[12]][[42]]
NULL
[[12]][[43]]
NULL
[[12]][[44]]
NULL
[[12]][[45]]
NULL
[[12]][[46]]
NULL
[[12]][[47]]
NULL
[[12]][[48]]
NULL
[[12]][[49]]
NULL
[[12]][[50]]
NULL
[[12]][[51]]
NULL
[[12]][[52]]
NULL
[[12]][[53]]
NULL
[[12]][[54]]
NULL
[[12]][[55]]
NULL
[[12]][[56]]
NULL
[[12]][[57]]
NULL
[[12]][[58]]
NULL
[[12]][[59]]
NULL
[[12]][[60]]
NULL
[[12]][[61]]
NULL
[[12]][[62]]
NULL
[[12]][[63]]
NULL
[[12]][[64]]
NULL
[[12]][[65]]
NULL
[[12]][[66]]
NULL
[[12]][[67]]
NULL
[[12]][[68]]
NULL
[[12]][[69]]
NULL
[[12]][[70]]
NULL
[[12]][[71]]
NULL
[[12]][[72]]
NULL
[[12]][[73]]
NULL
[[12]][[74]]
NULL
[[12]][[75]]
NULL
[[12]][[76]]
NULL
[[12]][[77]]
NULL
[[12]][[78]]
NULL

LS0tDQp0aXRsZTogIkZ1bmN0aW9ucyB0byBHZW5lcmF0ZSBGaWd1cmUgMSINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICBpbmZvX3ByaW50OiBwYWdlZA0KICBodG1sX25vdGVib29rOiBkZWZhdWx0DQogIHBkZl9kb2N1bWVudDogZGVmYXVsdA0KICBwaW5mb19kb2N1bWVudDogZGVmYXVsdA0KICB3b3JkX2RvY3VtZW50OiBkZWZhdWx0DQotLS0NCg0KYGBge3J9DQppbmZvIDwtIHJlYWQuY3N2KCIuLi9kYXRhL3RyYWluX3NldC9sYWJlbC5jc3YiKQ0KbG9hZCgiLi4vb3V0cHV0L2ZpZHVjaWFsX3B0X2xpc3QuUmRhdGEiKQ0KbGlicmFyeShyZWFkeGwpDQojIEEgZnVuY3Rpb24gdG8gcGxvdCBoaXN0b2dyYW0gb2YgZGlzdHJpYnV0aW9uIG9mIHBhaXJ3aXNlIGRpc3RhbmNlIGZvciBlYWNoIGVtb3Rpb24NCiMgaW5wdXQ6IGVtb3Rpb24gaW5kZXgsIGZpcnN0IHBvaW50LCBzZWNvbmQgcG9pbnQsIHZlcnRpY2FsIG9yIGhvcml6b250YWwgZGlzdGFuY2UNCiMgb3V0cHV0OiBoaXN0b2dyYW0gb2YgZGlzdGFuY2UgZGlzdHJpYnV0aW9uDQpkaXN0X2hpc3RvZ3JhbV9ieV9lbW90aW9uIDwtIGZ1bmN0aW9uKGVtb3Rpb25faWR4LCBwdDEsIHB0MiwgdmVydGljYWwgPSBUKXsNCiAgICBpbmRpY2VzIDwtIGluZm9baW5mbyRlbW90aW9uX2lkeCA9PSBlbW90aW9uX2lkeCwgJ0luZGV4J10NCiAgICBlbW90aW9uIDwtIGFzLmNoYXJhY3RlcihpbmZvW2luZm8kZW1vdGlvbl9pZHggPT0gZW1vdGlvbl9pZHgsICdlbW90aW9uX2NhdCddKVsxXQ0KICAgIHZlci5kaXN0IDwtIGZ1bmN0aW9uKGlkeCl7DQogICAgICAgIGlmKHZlcnRpY2FsKXsNCiAgICAgICAgdmVyLmxvYyA8LSBmaWR1Y2lhbF9wdF9saXN0W1tpZHhdXVssMl0NCiAgICAgICAgfQ0KICAgICAgICBlbHNlew0KICAgICAgICB2ZXIubG9jIDwtIGZpZHVjaWFsX3B0X2xpc3RbW2lkeF1dWywxXSANCiAgICAgICAgfQ0KICAgICAgICBwYWlyd2lzZV9kaXN0IDwtIGFzLm1hdHJpeChkaXN0KHZlci5sb2MpKQ0KICAgICAgICB2ZXIuZGlzdCA8LSBwYWlyd2lzZV9kaXN0W3B0MSxwdDJdDQogICAgcmV0dXJuKHZlci5kaXN0KQ0KfQ0KICAgIGRpc3RfZGlzdHJpYnV0aW9uIDwtIHNhcHBseShpbmRpY2VzLCB2ZXIuZGlzdCkNCiAgICAjanBlZyhwYXN0ZShjKCcuLi9vdXRwdXQvaGlzdCcsIGVtb3Rpb25faWR4LCJfIiwgcHQxLCAiXyIsIHB0MiwgJy5qcGcnKSwgY29sbGFwc2UgPSAnJyksDQogICAgI3dpZHRoID0gNTAwLCBoZWlnaHQgPSAzNzUpDQogICAgaGlzdChkaXN0X2Rpc3RyaWJ1dGlvbiwgeGxhYiA9ICJkaXN0YW5jZSIsIA0KICAgICAgICAgbWFpbiA9IHBhc3RlKGMoZW1vdGlvbiwgImRpc3RhbmNlIGJldHdlZW4iLCBwdDEsICJhbmQiLCBwdDIpLGNvbGxhcHNlID0gIiAiKSkgDQogICAgYWJsaW5lKHYgPSBtZWFuKGRpc3RfZGlzdHJpYnV0aW9uKSkNCiAgICAjZGV2Lm9mZigpDQp9DQoNCiMgQSBmdW5jdGlvbiB0byBnZW5lcmFsaXplICJkaXN0X2hpc3RvZ3JhbV9ieV9lbW90aW9uIiB0byBhbGwgZW1vdGlvbnMgDQpkaXN0X2hpc3RvZ3JhbSA8LSBmdW5jdGlvbihwdDEsIHB0MiwgdmVydGljYWwgPSBUKXsNCiAgbGFwcGx5KDE6MjIsIGRpc3RfaGlzdG9ncmFtX2J5X2Vtb3Rpb24sIHB0MSwgcHQyLCB2ZXJ0aWNhbCkNCn0NCg0KI2V4YW1wbGVzDQpkaXN0X2hpc3RvZ3JhbSg1MCw1MikNCmRpc3RfaGlzdG9ncmFtKDEsMjEpDQpgYGANCg0KYGBge3J9DQpsaWJyYXJ5KEVCSW1hZ2UpDQojIGEgZnVuY3Rpb24gZGlzcGxheSBmaWR1Y2lhbCBwb2ludHMgb24gaW1hZ2VzDQojIGlucHV0OiBpZGVudGl0eSBpbmRleA0KIyBvdXRwdXQ6IGFsbCBpbWFnZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpZGVudGl0eSB3aXRoIGZpZHVjaWFsIHBvaW50cyBtYXJrZWQNCmRpc3BsYXlfZmlkX3B0IDwtIGZ1bmN0aW9uKGlkZW50aXR5KXsNCiAgICBpbmRpY2VzIDwtIGluZm9baW5mbyRpZGVudGl0eSA9PSBpZGVudGl0eSwgJ0luZGV4J10NCiAgICBlbW90aW9ucyA8LSBhcy5jaGFyYWN0ZXIoaW5mb1tpbmZvJGlkZW50aXR5ID09IGlkZW50aXR5LCAnZW1vdGlvbl9jYXQnXSkNCiAgICBpbWFnZS5wYXRoX3N1YiA8LSBwYXN0ZTAodHJhaW5faW1hZ2VfZGlyLCBzcHJpbnRmKCIlMDRkIiwgaW5kaWNlcyksICIuanBnIikNCiAgICBJbWFnZV9saXN0X3N1YiA8LSBsYXBwbHkoaW1hZ2UucGF0aF9zdWIsIEVCSW1hZ2U6OnJlYWRJbWFnZSkNCiAgICBmaWR1Y2lhbF9wdF9saXN0X3N1YiA8LSBmaWR1Y2lhbF9wdF9saXN0W2luZGljZXNdDQoNCiAgICBkaXNwbGF5X3NpbmdsZSA8LSBmdW5jdGlvbihqKXsNCiAgICAgICAgI2pwZWcocGFzdGUoYygnLi4vb3V0cHV0LycsIGlkZW50aXR5LCdfJywgaiwgJy5qcGcnKSwgY29sbGFwc2UgPSAnJyksIHdpZHRoID0gNTAwLCBoZWlnaHQgPSAzNzUpDQogICAgICAgIGRpc3BsYXkoSW1hZ2UoSW1hZ2VfbGlzdF9zdWJbW2pdXSwgY29sb3Jtb2RlID0gJ0NvbG9yJyksIG1ldGhvZD0icmFzdGVyIikNCiAgICAgICAgdGV4dCh4ID0gMTcwLCB5ID0gNTAsIGxhYmVsID0gZW1vdGlvbnNbal0sIGNleCA9IDEuNSkNCiAgICAgICAgYWRkX3BvaW50IDwtIGZ1bmN0aW9uKG4pe3RleHQoeCA9IGZpZHVjaWFsX3B0X2xpc3Rfc3ViW1tqXV1bbiwxXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGZpZHVjaWFsX3B0X2xpc3Rfc3ViW1tqXV1bbiwyXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBhcy5jaGFyYWN0ZXIobiksIGNvbCA9ICJ3aGl0ZSIsIGNleCA9IDAuOCl9DQogICAgICAgIGxhcHBseSgxOjc4LGFkZF9wb2ludCkNCiAgICAgICAgI2Rldi5vZmYoKSANCn0NCg0KICAgIGxhcHBseSgxOmxlbmd0aChpbmRpY2VzKSwgZGlzcGxheV9zaW5nbGUpIA0KfQ0KDQpkaXNwbGF5X2ZpZF9wdCgxMTApDQoNCmBgYA0KDQo=